home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Shareware Grab Bag
/
Shareware Grab Bag.iso
/
081
/
opus100b.arc
/
XLATV281.ARC
/
XLATLIST.DOC
< prev
next >
Wrap
Text File
|
1987-05-29
|
53KB
|
1,441 lines
XlatList and RouteGen
User's Manual
(C) COPYRIGHT 1985,86,87 by System Enhancement Associates, Inc.
ALL RIGHTS RESERVED
TABLE OF CONTENTS
_______ ____ Section Page
Introduction .................................................... 1
License ......................................................... 1
Disclaimer ...................................................... 1
XlatList ........................................................ 2
XlatList control file ........................................... 3
Your own network address ..................................... 3
Country ...................................................... 3
Mode of operation ............................................ 3
User directory ............................................... 3
Forcing user directory entries ............................... 4
Node list report ............................................. 4
Node list report index ....................................... 5
Summary report ............................................... 5
Comments report .............................................. 5
Dashes in phone numbers ...................................... 5
Routing data files ........................................... 5
Processed node list .......................................... 6
Maximum baud rate ............................................ 6
Private node lists ........................................... 6
SEAdog node list prefixes .................................... 6
Inserting phone numbers ...................................... 6
Inserting baud rates ......................................... 7
Telephone dialing instructions ............................... 7
The cost table ............................................... 8
Multiple input files ......................................... 9
Command line arguments ....................................... 9
Multiple zones .................................................. 9
RouteGen ........................................................ 10
Lists of nodes .................................................. 12
Predefined macros ............................................... 12
By network or region ......................................... 12
By area code ................................................. 12
By country code .............................................. 12
By node list flags ........................................... 13
By routing hub ............................................... 13
By a list in a file .......................................... 13
By baud rate ................................................. 13
Everybody! ................................................... 14
Except! ...................................................... 14
Special RouteGen control file statements ........................ 15
Your own network address ..................................... 15
Mode of operation ............................................ 15
Multiple output files ........................................ 15
Multiple input files ......................................... 15
Defining your own macros ..................................... 15
Defining BIG macros .......................................... 16
Different schedules .......................................... 16
Routing mail ................................................. 16
Conditionals ................................................. 17
Everything else .............................................. 18
More on conditional statements .................................. 19
A Sample routing control file ................................... 20
Node list size limits ........................................... 21
INTRODUCTION INTRODUCTION
XlatList and RouteGen are utilities to assist system operators
XlatList (sysops) in making use of St. Louis format node lists. XlatList is
used to translate a St. Louis format node list into useable form.
RouteGen RouteGen is used in conjunction with XlatList to assist in the
creation of routing files.
Each of these utilities is capable of functioning in either of two
SEAdog Fido modes: SEAdog mode, and Fido mode. The differences will be described
where applicable.
LICENSE LICENSE
XlatList and Routegen are the copyrighted property of System
Enhancement Associates, Inc. You are granted a limited license to use
them, and to copy and distribute them, provided that the following
conditions are met:
1) No fee may be charged for such copying and distribution.
2) They may ONLY be distributed in their original, unmodified state.
___ 3) They may not be distributed, in whole or in part, as part of any
commercial product or service without the express written
permission of System Enhancement Associates, Inc.
4) You accept full responsibility for whatever happens or fails to
happen.
Contributions for the use of these programs will be appreciated, and
should be sent to:
System Enhancement Associates, Inc.
21 New Street, Wayne NJ 07470
You may not use these products in a commercial environment or a
governmental organization without paying a license fee of $35. Site
licenses are available.
DISCLAIMER DISCLAIMER
We accept no responsibility for anything at all. You use these
programs at your own risk. If they completely trash your system and
destroy a multimillion dollar database, then you have our sincerest
regrets, but you're on your own.
XlatList and RouteGen Page 1
XLATLIST XLATLIST
XlatList is a "predigester" for the St. Louis format node list which
turns it into a node list usable by SEAdog, Fido, or Opus. It looks
on disk for a file of the name "NODELIST.nnn", where "nnn" is some
number. If it finds more than one such file, then it picks the one
with the highest number.
For example, if you have four files on disk named:
NODELIST.312
NODELIST.319
NODELIST.326
NODELIST.BBS
Then XlatList will read NODELIST.326, and ignore the others. In fact,
you should be careful about this just after New Year's Day. St. Louis
format node lists use the julian date for the extension, so XlatList
will almost always pick the proper one. But at the start of the year
the numbering starts over at 001. If you have any older node lists
lying around, XlatList will pick the oldest list from the previous
year, which probably isn't what you want.
If you have one or more NODEDIFF.nnn files on your disk, then XlatList
will select the one with the highest number and attempt to apply it to
the selected nodelist, in hopes of making a new node list file to use.
For example, if you have five files on disk named:
NODELIST.312
NODELIST.319
NODEDIFF.319
NODEDIFF.326
NODELIST.BBS
Then XlatList will try to apply the changes in NODEDIFF.326 against
the data in NODELIST.319 in an attempt to create NODELIST.326. If it
succeeds, it will scan the newly created NODELIST.326. Otherwise, it
will scan NODELIST.319.
If the difference file includes a CRC check (given as a decimal number
following a colon on the first line), then XlatList will compute a CRC
value for the created node list and compare it with the CRC value
given in the difference file. If they differ, then it will print an
error message, and insert warnings at the end of the node list reports
and at the beginning of the created NODELIST.BBS file (if any).
XlatList is controlled primarily by its own control file, which is
named "XLATLIST.CTL". This file is free-format text, and can be
created with any normal text editor (such as EDLIN). A semicolon
anywhere in the file marks the start of a comment, and everything from
the semicolon to the end of the line is ignored.
SEAdog Page 2 XlatList
___ XlatList is not case sensitive. Anything in its control file or in
the node list or any of its arguments may be given in either uppercase
or lowercase or a combination of the two.
Following is a description of the possible statements that you can put
in a XlatList control file:
NODE <zone>:<net>/<node> NODE <zone>:<net>/<node>
This tells XlatList what your network address is. This is
especially required if your node list contains multiple zones, as
XlatList will need to know what zone you are in. This is also
used to determine the default network number for use elsewhere.
COUNTRY <n> COUNTRY <n>
This tells XlatList what country you are in. The cost table and
the dialing table (see below) each have defaults for domestic and
international calls. An international call is defined as one
where the country code is different than your own. This defines
what your own country code is. The default is "1" (United States)
FIDO FIDO
SEADOG SEADOG
These tell XlatList who it is generating the node list for. The
default is SEADOG. If you are using XlatList to generate a node
list for a Fido BBS system, then your XLATLIST.CTL file should
contain a FIDO statement.
The two modes differ principally in the use of node list prefixes,
such as IGATE, OGATE, and HUB. Any prefixes defined in the
XlatList control file are ignored in Fido mode. HUB prefixes
present in the St. Louis node list are preserved in SEAdog mode,
but stripped off in Fido mode. Additionally, when in Fido mode
hubs in nets other than your own (as given by the NODE statement)
are removed from the generated node list.
USERLIST USERLIST
INTERLIST INTERLIST
NOUSERLIST NOUSERLIST
These tell XlatList whether or not it should generate a directory
of the users (sysops) listed in the node list. USERLIST says to
generate a directory of users in your own zone. INTERLIST says to
generate a directory of all users in all zones. NOUSERLIST says
not to generate a directory, and is the default. The directory,
if any, will be placed in a file called FIDOUSER.LST, and will be
in a format suitable for use as a SEAdog user directory.
SEAdog Page 3 XlatList
Since a given node list may contain duplicate entries, XlatList
will try to resolve the duplicates in an intelligent fashion. The
exact method used by XlatList is somewhat complicated, but in
general for any given name XlatList will try to:
o Avoid listing an address that is marked DOWN or HOLD.
o Avoid listing an address in another zone.
o Give preference to an address in a network as opposed to an
address in a region.
o Avoid listing someone in their role as a host or hub.
o Choose a higher baud rate over a lower one.
o Give preference to an address that has continuous mail or
extended protocol, while trying to avoid an address that is
mail only.
o All else being equal, select the lower node number.
Based on some or all of the above criteria, and possibly on other
criteria as well, XlatList will attempt to select the most
suitable address to list for every name in the node list.
You must have a copy of Ben Baker's QSORT program for the USERLIST
or INTERLIST option to work.
ADDR <address> <name> ADDR <address> <name>
This statement is used to insert additional entries into the user
directory, or to force XlatList to select a given address instead
of what it would pick on its own. Any sort of address may be
specified, including extended addresses. Some examples are:
addr 1/0 Ben Baker
addr 107/6.1 Thom Henderson
addr 132/101!ncoast!lovell Dale Lovell
FIDOPRN FIDOPRN
FIDOTXT FIDOTXT
NOFIDOLIST NOFIDOLIST
These tell XlatList whether or not it should generate a human
readable report on what nodes are in your node list. FIDOPRN says
to generate a full 132 column report, which is placed in a file
named NODELIST.PRN. FIDOTXT says to create an abbreviated 80
column report, which is placed in a file named NODELIST.TXT.
NOFIDOLIST says not to generate any report at all, and is the
default.
Both the FIDOPRN and FIDOTXT statements may be given, in which
case both reports are created.
SEAdog Page 4 XlatList
INDEX INDEX
SINDEX SINDEX
NOINDEX NOINDEX
These tell XlatList whether or not it should add an index to the
end of the Fido listing. Each line of the index identifies one
net or region, and shows which page it is on. INDEX says to
create the index in the order that the nets and regions were
scanned. SINDEX says to sort the index by network number.
NOINDEX says not to generate the index at all, and is the default.
You must have a copy of Ben Baker's QSORT program in order for the
SINDEX option to work properly.
REPORT REPORT
NOREPORT NOREPORT
These tell XlatList whether or not it should print its report
about how many nets, nodes, and so forth it scanned. NOREPORT
says not to print the report. REPORT says to print it, and is the
default.
The report is printed at the end of the scan, when XlatList
finshes scanning all node lists. The report can be redirected to
a file or to the printer.
COMMENTS COMMENTS
NOCOMMENTS NOCOMMENTS
These tell XlatList wether or not to display comments from the
node list while compiling it. COMMENTS says to display them.
NOCOMMENTS says not to, and is the default. All comments marked
_ _ _ _ _ A, F, S, U, or ; are included. The comments may be redirected to
the printer or to a file, along with the summary table printed by
XlatList at the end of the run.
DASH DASH
NODASH NODASH
These tell XlatList whether or not you want dashes stripped from
the phone numbers in your NODELIST.BBS file. In some special
cases the sequence of digits being dialed exceeds the forty
character limit of Hayes-type modems. Stripping out the dashes
shortens the number that must be dialed. NODASH says to strip out
the dashes. DASH says to leave them in place, and is the default.
ROUTE ROUTE
NOROUTE NOROUTE
These tell XlatList whether or not to create temporary data files
for use by RouteGen. ROUTE says to create the files. NOROUTE
says not to, and is the default. At present, the only temporary
file created is NODELIST.FON.
SEAdog Page 5 XlatList
NODELIST NODELIST
NONODELIST NONODELIST
These tell XlatList wether or not to create a NODELIST.BBS file.
NODELIST says to create it, and is the default. NONODELIST says
not to create it.
MAXBAUD <baud> MAXBAUD <baud>
This tells XlatList the maximum baud rate to allow in the node
list. Any listed baud rate higher than <baud> will be set equal
to <baud> in the NODELIST.BBS file. SEAdog users do not need this
statement.
MYLIST <filename> ... MYLIST <filename> ...
PVTLIST <filename> ... PVTLIST <filename> ...
These tell XlatList the names of one or more St. Louis format node
lists to be read in addition to (and after) the main node list.
You would use these to add a private net to the main node list.
You may have as many MYLIST and PVTLIST statements in your control
file as you like, and they will be read in the order you give
them. They differ in that lists named in a MYLIST statement are
included in the reports created by the FIDOPRN and FIDOTXT
statements, while lists named in a PVTLIST statement are not.
IGATE [<net>/]<node> ... IGATE [<net>/]<node> ...
OGATE [<net>/]<node> ... OGATE [<net>/]<node> ...
GATE [<net>/]<node> ... GATE [<net>/]<node> ...
HUB [<net>/]<node> ... HUB [<net>/]<node> ...
These are used to place SEAdog node list prefixes in a St. Louis
format node list. Fido users will have no need of them. These
have no effect in Fido mode. SEAdog users should, at a minimum,
include an OGATE statement for their outbound host, if any.
PHONE [<net>/]<node> <number> PHONE [<net>/]<node> <number>
This is used to insert a phone number into the node list in place
of one that is already there. For example, if the phone number
given in the list for node 107/8 was "-Unpublished-", and you
wanted to replace it with "1-201-472-8065", then you would say:
PHONE 107/8 1-201-472-8065
If you do not specify a net number, then your own net (as defined
in the NODE statement) is used. You may have as many PHONE
statements as you like.
You should always give phone numbers in their full form (as above)
in order for other statements (such as DIAL) to work properly.
SEAdog Page 6 XlatList
BAUD [<net>/]<node> <baud> BAUD [<net>/]<node> <baud>
This is used to insert a baud rate into the node list in place of
one that is already there. For example, if node 107/8 was listed
as being 1200 baud, but you wanted to send to him at 300 baud,
then you would say:
BAUD 107/8 300
If you do not specify a net number, then your own net (as defined
in the NODE statement) is used. You may have as many BAUD
statements as you like.
DIAL [<domestic> [<international>]] DIAL [<domestic> [<international>]]
The DIAL statement marks the beginning of the dialing table. It
can also take up to two optional arguments. The first argument is
the default text to add to the phone number for all domestic
calls, while the second is the default for international calls.
Each entry in the dialing table consists of a partial phone number
followed by a replacement string. The partial phone number is
used to determine which replacements belong to which phone
numbers. The table is scanned in sequence until an entry is found
which matches the corresponding portion of the original phone
number. If no table entries match the original phone number, then
the appropriate default is used. This should be clearer in a
moment.
The replacement string can take any of the following forms:
<prefix>
<prefix>/<suffix>
/<suffix>
/
The <prefix> is added to the beginning of the phone number, and
the <suffix> is added to the end.
When a default string is applied, this is all that happens.
However, when a table entry is applied, the initial part of the
phone number which matched the table is first stripped off.
Here is an example of a dialing table:
DIAL /-123 011-
1-201-472- 8- ;In house
1-201- / ;New Jersey
END
This table would cause the following translations:
1) 1-201-694-3348 would become 694-3348. Since it matches the
"1-201-" entry, the initial "1-201-" gets stripped off. It's
replacement string is specifying no prefix and no suffix.
SEAdog Page 7 XlatList
2) 1-201-472-8065 would become 8-8065. As before, the matching
digits are stripped off, but this time the replacement string
is specifying a new prefix of "8-". Note that if the 1-201-
entry had come first, it would have been applied instead.
3) 1-212-288-9076 does not match any table entry, so the default
domestic string is used, and it becomes 1-212-288-9076-123.
Since no table entry was used, no digits are stripped off.
4) 31-8380-37156 also does not match any table entries, but this
number is in another country, so the international default is
used, and it becomes 011-31-8380-37156.
One last example. If you were in area code 201 and needed to dial
a "9" for long distance instead of a "1", here is how you would do
it:
DIAL
1-201- ;Strip area code off local calls
1- 9- ;Prefix all else with a nine
END
SEAdog users may wish to use the equivalent DIAL statement in
their CONFIG.DOG file instead. If the dialing table is used, then
___ the DIAL statement in the SEAdog configuration file should not be
used, and vice versa.
COST [<domestic> [<international>]] COST [<domestic> [<international>]]
This statement marks the beginning of the cost table. A series of
entries follows this statement, ending with an END statement. Up
to two optional arguments may be supplied with the COST statement.
The first argument is the default cost per message for domestic
calls, and the second is the default cost per message for
international calls. All costs are given in pennies.
Each entry in the cost table consists of a partial phone number
followed by a cost per message in pennies for calling that number,
optionally followed by a maximum baud rate to use. The partial
phone numbers are given in the same format as in the dialing
table, and are scanned the same way.
Here's an example of a typical COST table:
cost 22 300
1-201-542- 20 ;Eatontown
1-201-750- 13 ;Woodbridge
1-201-963- 07 300 ;Jersey City
1-203- 20 ;Connecticut
1-301- 20 ;Maryland
1-503- 27 ;Oregon
1-602- 26 ;Arizona
1-703- 20 ;Virginia
end
SEAdog Page 8 XlatList
INCLUDE <filename> INCLUDE <filename>
This causes XlatList to read commands from the named file. When
the end of the named file is reached, XlatList will resume reading
the current file at the statement following the INCLUDE statement.
Command Line Arguments Command Line Arguments
XlatList can be given any of the following arguments on the command
line when it is invoked:
SEAdog Produce SEAdog compatible output.
FIDO Produce Fido compatible output.
COMments Display node list comments.
NOComments Don't display node list comments.
ROUte Create the RouteGen data file.
NORoute Don't create the RouteGen data file.
PRNlist Create a 132 column Fido listing.
TXTlist Create an 80 column Fido listing.
NOFidolist Don't create a Fido listing.
INDex Add an index to the Fido listing.
NOIndex Don't add an index to the Fido listing.
NODelist Create a NODELIST.BBS file.
NONodelist Don't create a NODELIST.BBS file.
USErlist Create a FIDOUSER.LST file for your zone.
INTerlist Create a FIDOUSER.LST file for all zones.
NOUserlist Don't create a FIDOUSER.LST file.
Case is unimportant. Use of capitals in this list indicates the
minimum abbreviation (ie. "IND" for "INDEX").
Any of these options, when given, overrides the equivalent statement
in the control file.
Multiple zones Multiple zones
_____ Zones are a high-order division of the FidoNet node list. Zones and
countries are not related. A zone might contain several countries,
and a country might contain several zones.
Each zone is in effect its own node list. Mail traffic between the
____ ________ zones is provided by the zone gateways. Each zone's gateways to the
other zones are listed near the beginning of the node list for that
zone. This is not the place for an extended discussion of zones, zone
gateways, and zone addressing.
When XlatList processes a node list containing multiple zones, the
NODELIST.BBS file it creates will contain only those nodes which are
in your own zone. The user directory may include other zones or not,
as you wish.
SEAdog Page 9 XlatList
ROUTEGEN ROUTEGEN
RouteGen is a dedicated macro processor for use in creating routing
files. In general, it passes along whatever was present in the input
file, expanding any macros it finds along the way.
In its normal mode of operation RouteGen reads routing commands from a
control file called ROUTEGEN.CTL and places its output in a route file
called ROUTE.DOG. This can be altered in several ways:
1) The /U command line switch (see below) can be used to change the
name of the input file. In this case, the name of the output file
also changes to match that of the new input file, but with an
extension of ".DOG".
2) If RouteGen is placed in Fido mode, then instead of creating just
one output file with an extension of ".DOG", RouteGen will create
a separate route file for each schedule. The filename extension
on each route file will match the schedule tag for the schedule it
contains.
3) The FILE statement (see below) can be used to change the name (but
not the extension) of the output file being created. You can have
more than one FILE statement, allowing multiple sets of routing
files to be created in one operation.
RouteGen is invoked with a statement of the form:
routegen [<address>] [/M] [/S] [/U<filename>]
<address> is a network address, in either net/node format or
zone:net/node format. RouteGen does not use the zone number, nor does
it create interzone routing files at this time. The interzone address
format is included only for compatibility with other programs.
If an address is specified on the command line, then that address is
used in the same way and for the same things as the NODE statement in
a RouteGen control file. Note that a NODE statement overrides any
address that may be given on the command line.
RouteGen also understands the following command line options:
/U<filename> This names an alternate control file to use instead
of ROUTEGEN.CTL. If no extension is given, then
".CTL" is assumed. The output file created by
RouteGen will have the same name as the alternate
control file (but a different extension).
/F This tells RouteGen to operate in Fido mode, as
opposed to its default SEAdog mode. Note that a
SEADOG statement in the control file overrides this
option.
SEAdog Page 10 RouteGen
/S This tells RouteGen to operate in SEAdog mode,
which is its default state anyway. This option is
included for completeness.
/M This causes RouteGen to display status information
about its memory usage. This can be useful for
determining how a routing file got to be too
complex. See the section on advice and tips later
in this manual.
/T This causes RouteGen to dump its symbol table at
the end of the run. We're not sure what good this
would do you, but you might find it interesting.
Option switches may be given in either uppercase or lowercase, and may
begin with either a slash or a dash. They may also be bunched
together as long as the /U switch comes last. For example, if you
wanted to run RouteGen on a control file named WASTE.CTL, and you
wanted to see memory usage and the symbol table, you could type:
routegen -msuwaste
RouteGen reads its control file line by line, and expects each line to
begin with a keyword followed by all of its arguments. Keywords fall
into two classes, those which control RouteGen itself and those which
are routing instructions. The RouteGen control statements will be
described later. The routing instructions should be described in your
SEAdog or Fido manual.
RouteGen considers any statement which it does not understand to be a
routing control statement. In general RouteGen does not know any
routing commands. It expects them all to be of the form:
<verb> [<list>]
That is, a single word command, possibly followed by a list of network
addresses. There are five exceptions:
Schedule <tag> [<list>]
Route-to <address> <list>
Redial <number>
Don't <command> <list>
Script <keyword> <list>
These five routing commands, and no others, are known to RouteGen and
handled differently. For any other routing command Routegen merely
translates the list of nodes (if any) and passes it through.
SEAdog Page 11 RouteGen
A <list> consists of zero or more <address>es. An <address> can be
any of the following:
<net>/<node> The address of any given node.
<node> The address of another node in your own
network.
<net>/<lo>:<hi> A list of all nodes in the specified range.
<lo>:<hi> A list of all nodes in the specified range in
your own network.
<macro> A macro defining some list of nodes.
Most of the power of RouteGen comes from the use of macros. You can
define your own macros by use of the DEFINE and ALSO statements
(described later). RouteGen also has many predefined macros built in.
They are as follows:
NET-nnn NET-nnn
REGION-nnn REGION-nnn
These are equivalent, and are replaced with all of the nodes in
the given net.
Example:
No-route net-103
AREA-aaa[-eee[:eee][,eee[:eee]...] AREA-aaa[-eee[:eee][,eee[:eee]...]
This is replaced with all of the nodes whose phone numbers begin
with "1-aaa-", or with "1-aaa-eee-" if an exchange is specified.
Multiple exchanges may be specified, and ranges of exchanges may
be given.
Example:
Send-to area-201
Hold area-201 except area-201-472:474,694,776:778
COUNTRY-c[-aaa[-eee[:eee][,eee[:eee]]]] COUNTRY-c[-aaa[-eee[:eee][,eee[:eee]]]]
This is replaced with all of the nodes whose phone numbers begin
with "c", or with "c-aaa-" if an area code is specified, or with
"c-aaa-eee-" if both an area code and an exchange are specified.
Note that "COUNTRY-1-201" is equivalent to "AREA-201". Multiple
exchanges and ranges of exchanges may be specified as with the
AREA macro.
Example:
Hold country-51
SEAdog Page 12 RouteGen
FLAG-<x> FLAG-<x>
TAG-<x> TAG-<x>
These are equivalent, and are replaced with all of the nodes whose
node list entries contain the string <x>. Neither case nor
position is important. For example, "flag-XP" would be replaced
by a list of all nodes which contain the string "XP" anywhere in
their flags field. The flags field is the rightmost column of the
wide Fido report produced by XlatList.
Example:
Send-to flag-#CM
HUB-<node> HUB-<node>
HUB-<net/node> HUB-<net/node>
This is replaced by all of the nodes whose hub (as specified in
the St. Louis format node list) is the named node. The hub node
is included in the list. If you do not specify a net, then your
own net is assumed. For example, "hub-300" would be replaced by a
list of all nodes in your own net who have node 300 in your net as
their hub.
Example:
Forward-for hub-200
LIST-<filename> LIST-<filename>
This is replaced by all of the nodes referred to in the specified
file. Any word in the file which "looks like" a network address
(two numbers separated by a slash) will be included in the list.
All other words are ignored. This is specifically designed to
allow the use of "AREAS.BBS" in creating route files.
Example:
No-route list-AREAS.BBS
BAUD-<rate> BAUD-<rate>
This is replaced by a list of all nodes which are listed at the
given baud rate. Only nodes whose listed baud rate in the node
list exactly matches the rate stated will be listed. Nodes with
higher or lower baud rates will not be included.
Example:
Send-to baud-9600
SEAdog Page 13 RouteGen
ALL ALL
This is replaced with all of the nodes in the net. If possible,
it will be abbreviated to the short form, "ALL".
Example:
Give-to all
A <list> may contain the keywords EXCEPT and AND. These are used as
follows:
<list1> EXCEPT <list2>
results in a list of all addresses given in <list1> which are not also
given in <list2>.
<list1> AND <list2>
results in a list of all addresses given in <list1> which are also
given in <list2>.
<list1> AND <list2> AND <list3>
results in a list of all addresses which are given in all three lists.
EXCEPT and AND may be used together, in which case EXCEPT is evaluated
first. For example:
<list1> EXCEPT <list2> AND <list3>
results in a list of all addresses given in both <list1> and <list3>,
but not in <list2>.
___ You should not use EXCEPT in conjunction with metanodes like OURNET,
HOSTS, and so forth (except for the ALL metanode, see above).
Metanodes are not translated by RouteGen, so saying something like:
ournet except 107/3
will not work as you might expect. Use the equivalent macro in
RouteGen instead.
SEAdog Page 14 RouteGen
RouteGen Statements RouteGen Statements
Certain statements in the control file have special meaning to
RouteGen. They are:
NODE <net>/<node> NODE <net>/<node>
NODE <zone>:<net>/<node> NODE <zone>:<net>/<node>
This tells RouteGen what your network address is. If you use the
"IF NODE" conditional (see below), then you should be careful to
ensure that you have the correct address here. Otherwise, it is
sufficient if the net number is correct.
RouteGen makes no use of the zone number, nor can RouteGen create
interzone routing files. The interzone format is provided solely
for compatibility with other programs.
SEADOG SEADOG
FIDO FIDO
These tell RouteGen what mode to operate in. FIDO says to tailor
the output to the needs of the Fido BBS system. SEADOG says to
tailor it to the SEAdog Electronic Mail system, and is the
default.
FILE <name> FILE <name>
This tells RouteGen what name to use on future output files. It
also causes the current output file to be closed. In SEADOG mode
it causes the next output file to be opened immediately with an
extension of ".DOG".
INCLUDE <name> INCLUDE <name>
This tells RouteGen to read additional routing instructions from
the named file. If no extension is specified, ".CTL" is assumed.
When the end of the named file is reached RouteGen will resume
reading the current file at the statement after the INCLUDE
statement. The file being included may include additional files.
DEFINE <name> <list> DEFINE <name> <list>
This is used to define your own macros, and is quite powerful.
The <list> is translated immediately, and all future references to
<name> will be replaced with the list.
The entire definition must fit on one line, but you can define
macros in terms of themselves and other macros, so the resulting
list can be quite large indeed. See also the ALSO command, below.
SEAdog Page 15 RouteGen
ALSO <list> ALSO <list>
This is used to add to the definition of the previously defined
macro, thus allowing macro definitions to span more than one line.
For example:
define big 107/100 107/200 107/300
also 107/400 107/500
The first statement defines a macro called BIG as meaning a list
of the three given addresses. The second line adds two more
addresses to the definition of BIG, resulting in a macro called
BIG that means a list of all five addresses.
You may have as many ALSO statements as you like that memory
constraints will allow.
SCHEDULE <tag> [<list>] SCHEDULE <tag> [<list>]
In Fido mode this causes the current output file to be closed, and
a new one opened with an extension of ".<tag>". In SEAdog mode
the current output file is kept. Any macros in the <list> are
expanded, and the resulting SCHEDULE statement is output.
ROUTE-TO <node> <list> ROUTE-TO <node> <list>
If <node> is a macro, then it is expanded. The result is checked
to ensure that it refers to one (1) node, or else an error is
signalled. Any macros in <list> are expanded, and the resulting
ROUTE-TO statement is output. The list will always include the
node that is the target of the ROUTE-TO, and will thus always be
at least one entry in length.
When operating in Fido mode it is a fatal error to have a ROUTE-TO
statement before the first SCHEDULE statement, or between the
previous FILE statement and its following SCHEDULE statement.
REDIAL <n> REDIAL <n>
This is recognized as a special case, and is passed through
unchanged. The number given as the redial interval is not checked
for validity, and may not be a defined macro.
DISPLAY <list> DISPLAY <list>
This causes the network addresses comprising the <list> to be
displayed on the screen.
SEAdog Page 16 RouteGen
IF <condition> IF <condition>
IF NOT <condition> IF NOT <condition>
This is used to make parts of a RouteGen control file conditional.
This will only work when you are using a ".FON" file created by
XlatList (using the "ROUTE" control statement, q.v.), otherwise
the condition is undefined. The <condition> depends on your own
node number, as specified in the "NODE" statement or on the
command used to invoke RouteGen. If you have not defined your own
network address, then the results are undefined.
The following conditionals are currently defined:
IGATE IGATE True if you are the inbound gateway for your
network.
HOST HOST Same as IGATE. Note that FidoNet hosts are
sensibly equivalent to SEAdog inbound gateways.
OGATE OGATE True if you are the outbound gateway for your
network. Not defined in Fido mode.
HUB HUB True if you are a hub in your network. Not defined
in Fido mode.
LOCAL LOCAL True if you are none of the above.
NODE <list> NODE <list> True if you are a member of <list>, where <list> is
a list of one or more nodes.
ANY <list> ANY <list> True if the specified list contains any addresses.
SEADOG SEADOG True if RouteGen is currently in SEAdog mode.
FIDO FIDO True if RouteGen is currently in Fido mode.
Preceding any of these with the keyword NOT reverses the logic of
the test. For example:
if not any net-103
is true only if there are no nodes in network 103.
ELSE [<statement>] ELSE [<statement>]
This signals the converse of a previous IF. The statement
following the word ELSE is optional. If it is given, then no
ENDIF is required.
ENDIF ENDIF
This signals the end of a previous IF statement.
SEAdog Page 17 RouteGen
<anything> [<list>] <anything> [<list>]
Any other statement encountered by RouteGen is written to the
output file unchanged, with any macros in <list> expanded.
When operating in Fido mode it is a fatal error to have any such
statement before the first SCHEDULE statement, or between the
previous FILE statement and its following SCHEDULE statement.
SEAdog Page 18 RouteGen
RouteGen Conditionals RouteGen Conditionals
The IF, ELSE, and ENDIF statements all work together pretty much as
you'd expect, and may be nested as deeply as you like that memory
constraints will allow.
Here's an example of the use of conditionals:
if host
forward-to ournet
else if ogate
forward-for ournet
else if hub
if node 100
forward-to 100:199
else if node 200
forward-to 100:299
else if node 300
forward-to 300:399
else if node 400
if any 400:499
forward-to 400:499
endif
endif
else poll 100
The ELSE statement can take any of three basic forms. Whether or not
an ENDIF will be required depends on which form of ELSE is used, as
follows:
1) ELSE An ENDIF will be required.
2) ELSE IF An ENDIF will be required, unless another ELSE
clause follows this one.
3) ELSE <statement> An ENDIF is not required.
This sounds strange, but with any luck it'll be intuitively obvious.
SEAdog Page 19 RouteGen
Sample routing control file Sample routing control file
Here is an example of a routing control file:
node 107/3 ;Where I'm working from
fido ;Only the Fidos need this
define nj area-201 area-609 area-215 ;Define our routing areas
define li area-516 area-716 area-914
define ny area-212 area-315 area-718
define nj net-107 except ny li ;Squeeze out independents
define ny net-107 except nj li
define li net-107 except nj ny
Schedule B ;Call nobody
Schedule C 16 ;Upload to outbound host
accept-from ny
route-to 16 all
Schedule D All ;National mail hour
accept-from ny ;In case outbound is down
Schedule E 16 50 ;Download to hubs
accept-from all
route-to 16 nj
route-to 50 li
send-only
Schedule F ournet ;In case a hub is down
accept-from all
no-route all
send-only
A more involved routing example should accompany this program and
manual.
SEAdog Page 20 RouteGen
NODE LIST SIZE LIMITS NODE LIST SIZE LIMITS
XlatList has no limit on the size of the node list that it can
process. It handles a node list in serial fashion, and can thus
properly handle a list of any size.
____ RouteGen, on the other hand, does have an upper limit on the size of
the node list which it can handle. By the very nature of what it is
doing, it must be able to create and use a table of all of the nodes
in the node list. At this time that table is kept in memory for
reasons of speed. There are no provisions for spooling the table to
disk if it grows too large to hold in memory. Table space is
dynamically allocated as it is needed, so there is no defined upper
limit. Instead, it is limited by the total amount of memory which is
available when RouteGen is run. RouteGen will abort with an error
message if the node list is too large to process.
In addition, as macros are defined they too are held in memory. It is
quite possible for a routing control file of modest length to define
macros of such size that they cannot all be held in memory at one
time. RouteGen will abort with an error message if the routing
control file is too complex to process.
You should try to avoid creating route files that define very large
macros. By this we mean macros which evaluate to a very long list of
nodes. In particular, if your route file contained:
define st-louis net-100 1/0 1/2 1/107
define outbound 100/10
define world all except st-louis
schedule c
send-to outbound
route-to outbound world
schedule d
send-to world
route-to outbound world
it may work, but it probably isn't a good idea. In this particular
case, the macro "world" is being defined as a very large list of
nodes. A large list like this has the following disadvantages:
1) It requires a lot of memory to define.
2) It takes a fair amount of processor time to define.
3) It will generate a very large route file, which will consume
much disk space.
4) It will take longer for your mail server to set up a mail
event, since it will have to scan and process a very large
route file.
SEAdog Page 21 RouteGen
Here's a better way to get the same result:
define st-louis net-100 1/0 1/2 1/107
define outbound 100/10
schedule c
send-to outbound
route-to outbound ALL
no-route st-louis
schedule d
send-to ALL
route-to outbound ALL
hold st-louis
This example uses the keyword "ALL", but "ALL" isn't expanded unless
you use the "ALL EXCEPT" construct. "ALL EXCEPT" is perfectly legal,
but as a general rule you should try to avoid using it.
If you are using SEAdog, then here's another trick you can use:
define st-louis net-100 1/0 1/2 1/107
define outbound 100/10
schedule c
send-to outbound
route-to outbound ALL
except st-louis
schedule d
send-to ALL
route-to outbound ALL
except st-louis
In this case RouteGen will treat the EXCEPT as a routing verb, and
thus not expand the ALL keywords. SEAdog, on the other hand, does not
read the routing file in a line-by-line fashion, and will thus
properly execute the commands.
SEAdog Page 22 RouteGen